package com.config;

import jakarta.servlet.MultipartConfigElement;
import jakarta.servlet.ServletRegistration;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

/**
 * @ClassName WebInitializer
 * @Description Web配置类
 * @Author Kx
 * @Date 2025/5/18 19:23
 * @Version 1.0
 */
public class WebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
    /**
     * @author: kx
     * @date: 2025/5/18 19:24
     * @return java.lang.Class<?>[]
     * @description: 设置主配置类
    */
    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[0];
    }

    /**
     * @author: kx
     * @date: 2025/5/18 19:24
     * @return java.lang.Class<?>[]
     * @description: 设置Mvc配置类
    */
    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{RootConfig.class};
    }

    /**
     * @author: kx
     * @date: 2025/5/18 19:24
     * @return java.lang.String[]
     * @description: 设置映射路径
    */
    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }

    /**
     * @author: kx
     * @date: 2025/5/21 11:37
     * @param registration :
     * @description: 启用DispatcherServlet上传功能
    */
    @Override
    protected void customizeRegistration(ServletRegistration.Dynamic registration) {
        // 创建上传配置对象
        /**
         * 参数一: 上传的根目录
         * 参数二: 限制的单个文件上传的大小
         * 参数三: 限制本次请求体中所有的文件总大小
         * 参数四: 达到指定大小写入文件
        */
        MultipartConfigElement multipartConfigElement = new MultipartConfigElement("", 20971520, 2097152000, 2097152);
        // 注册上传配置
        registration.setMultipartConfig(multipartConfigElement);
        // 让  DispatcherServlet 在启动 web 容器时初始化
        registration.setLoadOnStartup(0);
    }
}
